"""
    1：特征预处解释：
        背景：
            实际开发中，如果多个特征列因为单位（量纲）问题，导致数值的差距过大
            则会导致模型预测值偏差
            例如：
                身高 -》米
                体重-》KG（公斤）
            目的：为了保证每个特征列对最终预测结果的权重都是相近的。
            所以我们需要把数据进行特征预处理。
        实现方式：
            归一化
            标准化
        归一化介绍：
            概述：特征预处理一种方式
            实现：sklearn.preprocessing.MinMaxScaler (feature_range=(0,1))
        公式：
            x'=(x-min)/(max-min)
            x''=x'*(mx-mi)+mi
        公式解释：
            x=>某个特征列， 需要归一化特征列 原值
            x'=>基于公式计算中间结果
            x''=>最终结果
            min=》该列的最小值
            max=>该列的最大值
            mi-》映射区间的最小值,默认是0
            mx-》映射区间的最大值,默认是1
        弊端：
            强依赖该列特征最大值和最小值 ，如果差值过大，计算效果可能不明显。
        场景：归一化，适用于小数据集的特征预处理
"""
# 导包
from sklearn.preprocessing import MinMaxScaler  # 归一化类

# 1、准备特征数据  每个子列表， = 一个 样本
data = [[90, 2, 10, 40],
        [60, 4, 15, 45],
        [75, 3, 13, 46]]

#2、创建归一化对象
transfer=MinMaxScaler(feature_range=(3, 5))  #默认区间[0,1]
# MinMaxScaler()

#3、具体归一化动作
#第一次解释：fit_transform()  该方法适用于  训练+转换适合第一次处理数据的时候
#          transform()     适用于测试集
new_data=transfer.fit_transform(data)
#4、打印归一化后的结果
print(f"归一化后:数据集为:\n{new_data}")
